<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// 理解
	// - 就是一块"地盘", 一个代码段所在的区域
	// - 它是静态的(相对于上下文对象), 在编写代码时就确定了
	// var a = 1;// 全局作用域
	// function fn(){
	// 	var a = 1;// 函数作用域
	// }
	// fn();
	
	
	// 分类
	// - 全局作用域:任何不在函数或是大括号中声明的变量,都是在全局作用域下,全局作用域中声明的变量可以在程序的任意位置访问
	// var a = 1;
	// - 函数作用域:如果一个变量是在函数内部声明的,它就在局部作用域下,这个变量只能在函数内部访问,不能再函数以外去访问
	// var a = 1;
	// function fn(){
	// 	var b = 2;
	// 	console.log(a,b);
	// }
	// fn();
	// console.log(b)
	
	// - 没有块作用域(`ES6`有了):`ES6`引入了`let`和`const`关键字,和var关键字不同,在大括号中使用`let`和`const`声明的变量存在于块级作用域中,在大括号之外不能访问这些变量
	// {
	// 	var a = 1;
	// }
	// console.log(a);
	
	// if(true){
	// 	var a = 1;
	// }
	// console.log(a);
	
	// for(let i=0;i<10;i++){
	//
	// };
	// console.log(i);
	
	// 作用
	// - 隔离变量，不同作用域下同名变量不会有冲突
	let userName = "zhangsan";
	function fn(){
		let userName = "LISI"
	}
	fn();
</script>
</html>